package com.enn.demo.core.domain.repository;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.enn.demo.core.domain.model.user.Mobile;
import com.enn.demo.core.domain.model.user.Token;
import com.enn.demo.core.domain.model.user.User;
import com.enn.demo.core.domain.model.user.UserId;
import com.enn.demo.dal.entity.SysUserDO;

import java.util.List;
import java.util.Map;

/**
 * 用户-Repository接口
 *
 * @author haoxin
 * @date 2021-02-02
 **/
public interface UserRepository {

    /**
     * 通过用户ID获取用户
     *
     * @param userId
     * @return
     */
    User find(UserId userId);

    /**
     * 根据token获取用户
     *
     * @param token
     * @return
     */
    User find(Token token);

    /**
     * 根据手机号获取账号
     *
     * @param mobile
     * @return
     */
    List<User> find(Mobile mobile);

    /**
     * 保存
     *
     * @param user
     */
    UserId store(User user);

    /**
     * 删除
     *
     * @param userIds
     */
    void remove(List<UserId> userIds);

    /**
     * 查询分页
     * @param params
     * @return
     */
    IPage<SysUserDO> queryPage(Map<String, Object> params);

    /**
     * 非租户查询
     * @param params
     * @return
     */
    List<SysUserDO> queryUserNoTenant(Map<String, Object> params);
}
